#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>

int main()
{
//    printf("stdin: %d\n", stdin->_fileno);
//    printf("stdout: %d\n", stdout->_fileno);
//    printf("stderr: %d\n", stderr->_fileno);
//

    close(0);
    

    printf("\n\n");
    //将文件创建时权限掩码设为0
    umask(0);
    int fd1 = open("log1.txt", O_CREAT | O_WRONLY | O_TRUNC , 0666);
    int fd2 = open("log2.txt", O_CREAT | O_WRONLY | O_TRUNC , 0666);
    int fd3 = open("log3.txt", O_CREAT | O_WRONLY | O_TRUNC , 0666);
    int fd4 = open("log4.txt", O_CREAT | O_WRONLY | O_TRUNC , 0666);
    if(fd1 < 0) exit(1);
    if(fd2 < 0) exit(1);
    if(fd3 < 0) exit(1);
    if(fd4 < 0) exit(1);

    printf("fd1: %d\n", fd1);
    printf("fd2: %d\n", fd2);
    printf("fd3: %d\n", fd3);
    printf("fd4: %d\n", fd4);
    
    close (fd1);
    close (fd2);
    close (fd3);
    close (fd4);

    /*
    //打开文件方式，若等于-1，打开失败
    //不存在就创建，并且只写，权限为全部可读可写
    //int fd = open("log.txt", O_CREAT | O_WRONLY | O_TRUNC , 0666);
    
    //追加写
    //int fd = open("log.txt", O_CREAT | O_WRONLY | O_APPEND , 0666);
    
    //读
    int fd = open("log.txt", O_RDONLY);
    if(fd < 0)
    {
        perror("open");
        return 1;
    }

    printf("fd: %d\n", fd);
    
    while(1)
    {
        char buffer[64];
        int n = read(fd, buffer, sizeof(buffer)-1);
        if(n > 0)
        {
            buffer[n] = 0;
            printf("%s", buffer);
        }
        else if(n == 0)
        {
            break;
        }
    }

    return 0;
    const char *msg = "abcd";
    int a = 1234567;
    int cnt = 1;
    while(cnt--)
    {
        //当作字符来写 ---
        char buffer[16];
        snprintf(buffer, sizeof(buffer), "%d", a);
        write(fd, buffer, strlen(buffer));
    }

    //关闭文件，传open的返回值
    close(fd);*/

    return 0;
}
